A process in general contains a sequence of steps, tasks, or activities that convert an input to a desired output. The sequence of activities in a process begins with an input, which can be in a variety of forms such as investment capital, knowledge, physical materials, or software source code. The process can add value to the input by changing it or using it to produce a desired output, such as a product or service of desired value. A process produces a desired product or service by applying resources such as computing power, time, and manpower. The input process may be anything from billing customers, to prosecuting a patent application, to developing and testing a software product. An efficient process enables things to be done faster, cheaper, and/or outputs a better product or service. An efficient process may also use resources more efficiently and effectively.
Among various processes, some processes include a plurality of actions that are to be performed sequentially. For example, a software testing process may include sequential actions such as submitting source code to be tested, reviewing the submitted source code, performing various tests on the submitted source code, and checking the tested source code into a source code control system that controls and tracks changes to files.
For a process including sequential actions, it is desirable to divide the process into a sequence of stages, each of which includes one or more sequential actions in the process. The stages are then executed sequentially. It is also desirable that each stage is assigned to an owner, who is then held accountable for the proper performance of the stage. Further, it is desirable to keep track of the progression of the process by identifying the execution status of each stage in the process. Furthermore, it is desirable that each stage in a process is capable of being customized according to specific requirements, such as a user's specific need in performing the process.
Therefore, there exists a need for a mechanism that divides a process into a plurality of stages to be performed sequentially, wherein each stage involves one or more actions of the process. There also exists a need to be able to customize individual stages of the process according to specific requirements of the process. There further exists a need to keep track of the progression of the process by identifying the status of each stage in the process at a given moment.